Verilog-A 数据类型与变量

数值变量

integer(整数型)

integer variable_name[[array_size]];

real(实数/浮点型)

real variable_name[[array_size]];

数组

integer i[1:10];
real    j[1:10];

注意:与总线声明顺序相反——变量数组是 名字 在前、[范围] 在后(总线是 input [1:12] bus)。

参数 parameter

parameter [integer|real] variable_name [from|exclude];
parameter integer rin from [100K:10M];           // 100K~10M
parameter integer rin from [100K:10M] exclude 200K;  // 且不能等于 200K
parameter real inp =100K from[1K:inf] exclude [90K:99K] exclude 12K;
parameter integer array_size = 4;
parameter real I_gc[1:array_size] = '{4{0.00}};

动态参数 dynamicparam

dynamicparam [integer|real] variable_name [from|exclude];

局部参数 localparam

localparam [integer|real] variable_name [from|exclude];

genvar(总线循环专用)

genvar variable_name;
genvar i;
for(i=0;i<16;i=i+1) begin
  V(out[i]) <+ V(in[i]);
end

⚠️ Verilog-A 不支持 i++,必须写 i = i + 1。

网线和节点

内部节点 electrical

electrical net_name;

地 ground

ground net_gnd;

wreal

wreal net_name[array_size];

分支 branch

branch (net_name1, net_name2) branch_name;
branch (p, n) rl, (p, n) cap;
analog begin
    V(rl) <+ r*I(rl);
    I(cap) <+ c*ddt(V(cap));
end

类型速查表

类型 关键字 赋值 说明
整数 integer = 控制逻辑
实数 real = 中间结果
参数 parameter 实例化设置 可限定范围
动态参数 dynamicparam 运行时也可改 仿真器依赖
局部参数 localparam 不可改 独立性
循环变量 genvar 编译期 总线展开
模拟节点 electrical <+ V/I 访问
实数网络 wreal 事件驱动 高速
分支 branch <+ 并联命名

相关笔记